package ar.com.ctrln.view.dashboard.compras.compra;

import java.text.SimpleDateFormat;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.annotation.VariableResolver;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Row;

import ar.com.ctrln.control.compras.compra.ConsultarCompra;
import ar.com.ctrln.persistence.model.compra.Compra;
import ar.com.ctrln.persistence.model.compra.DetalleCompra;
import ar.com.ctrln.view.ui.comportamientoVentana.AbstractMinimizarVentana;

@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class VerCompraController extends AbstractMinimizarVentana {

	private static final long serialVersionUID = 7729776081089431884L;

	@WireVariable
	private ConsultarCompra consultarCompra;

	Compra compra;

	double total;

	@Wire
	private Listbox lbDetalles;

	@Wire
	private Label lTotalCompra;

	@Wire
	private Label lCostoExtra;

	@Wire
	private Label lFormaPago;

	@Wire
	private Label lEstado;

	@Wire
	private Label lEstadoPago;

	@Wire
	private Label lCantCuotas;

	@Wire
	private Label lFechaEstimadaArribo;

	@Wire
	private Label lFechaAlta;

	@Wire
	private Label lFechaArribo;

	@Wire
	private Label lProveedor;

	@Wire
	private Row rowCantCuotas;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");

		compra = (Compra) Executions.getCurrent().getArg().get("data");
		if (compra.getFormaPago().equals(Compra.FORMAPAGO_TARJETA)) {
			rowCantCuotas.setVisible(true);
			lCantCuotas.setValue(String.valueOf(compra.getCantCuotas()));
		}

		if (compra.getFechaRecepReal() == null) {
			lFechaArribo.setValue("No recibido aun");
		} else {
			lFechaArribo.setValue(sdf.format(compra.getFechaRecepReal()));

		}
		lCostoExtra.setValue(String.valueOf(compra.getCostoExtra()));
		lFormaPago.setValue(compra.getFormaPago());
		if (compra.getFechaRecepTentativa() != null)
			lFechaEstimadaArribo.setValue(sdf.format(compra
					.getFechaRecepTentativa()));

		lFechaAlta.setValue(sdf.format(compra.getFechaAlta()));
		lProveedor.setValue(compra.getProveedor().getRazonSocial());
		
		if(compra.getDetalles()!=null){ 
			lbDetalles.setModel(new ListModelList<DetalleCompra>(compra.getDetalles()));
			for (DetalleCompra det : compra.getDetalles()) {
				total = total + det.getPrecioLote();
			}
		}
		lbDetalles.setMultiple(false);
		lbDetalles.setCheckmark(false);
		
		lEstado.setValue(compra.getEstado());
		lEstadoPago.setValue(compra.getEstadoPago());
		
		total = total + Double.valueOf(lCostoExtra.getValue());
		lTotalCompra.setValue("$"+String.valueOf(total));
	}

}
